Modern computers incorporate a variety of energy and power saving features that provide for turning off or substantially reducing the power requirements of various portions of their hardware which are not actively being used. Specific details vary and may be device specific, depending on the capabilities of the associated hardware, and available software control. Standardized protocols for power management became available starting in the early 1990s.
The first widely used standard, Advanced Power Management (or APM), assigned power management control to the BIOS, with limited intervention from the operating system. This was then replaced by the Advanced Configuration and Power Interface (ACPI) standard, an open industry standard first released in December 1996 and developed collaboratively by Hewlett-Packard Development Company, L.P.; Intel Corporation; Microsoft Corporation; Phoenix Technologies, Ltd.; and Toshiba Corporation. This standard put the operating system in control of power management and extended features previously made available only to laptop computers to desktop computers and servers.
ACPI requires compliant hardware including support for ACPI registers. The CPU, motherboard, and operating system must all be designed with support for ACPI features. A unique ACPI Machine Language (AML) is defined for implementing power-event handlers. The AML code is in the BIOS but is interpreted by the operating system.
ACPI defines sets of states including global sleep states (G0-G3 and S0-S5), device sleep states (D0-D3), CPU sleep states (C0-C3), and bus sleep states (B0-B3). Changes in state are under operating system control, but are typically triggered by a variety of interrupt events such as timers, mouse and keyboard events, wake-on-LAN, and hot-plugging and unplugging of devices. In a physical computing environment, interrupt events rarely conflict with each other, and no special methods are specified in the ACPI standard to manage the sequencing of event handling. Typically, an event handler can respond within a few milliseconds, and even if it takes a few seconds for the hardware to fully respond, the likelihood of another event in that time is low. However, there can be situations where multiple power management events occur nearly simultaneously.
A virtual machine (VM) is a software abstraction, or “virtualization,” of an actual physical computer system. Each VM typically mimics the general structure of a physical computer and as such will usually have both virtual system hardware and guest system software. The virtual system hardware typically includes at least one virtual CPU, virtual memory, at least one storage device such as a virtual disk, and one or more virtual devices. All of the virtual hardware components of the VM can be implemented in software to emulate corresponding physical components. The guest system software typically includes a guest operating system and drivers as needed.
A VM must also be able to respond to power management events.